import type { Metadata } from "next"; import Link from "next/link"; import { notFound } from "next/navigation"; import { BasePage } from "@/app/base-page"; import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react"; import { getReleaseByVersion, getSortedReleases } from "@/changelog/utils"; import { ReleaseArticle, ReleaseMeta, ReleaseTitle, ReleaseDescription, ReleaseChanges, } from "@/changelog/components/release"; import { CopyMarkdownButton } from "@/changelog/components/copy-markdown-button"; type Props = { params: Promise<{ version: string }> }; export const dynamicParams = false; export async function generateStaticParams() { return getSortedReleases().map((release) => ({ version: release.version })); } export async function generateMetadata({ params }: Props): Promise { const { version } = await params; const release = getReleaseByVersion({ version }); if (!release) return {}; return { title: `${release.title} (${release.version}) - OpenCut Changelog`, description: release.description, }; } export default async function ReleaseDetailPage({ params }: Props) { const { version } = await params; const releases = getSortedReleases(); const index = releases.findIndex((entry) => entry.version === version); if (index === -1) notFound(); const release = releases[index]; const newer = index > 0 ? releases[index - 1] : null; const older = index < releases.length - 1 ? releases[index + 1] : null; return (
All releases
{release.title} {release.description && ( {release.description} )}
); }